package com.alks.function.mapper.produce;

import com.alks.entity.data.entity.PcProcessChgHead;
import com.alks.entity.data.entity.PcProcessChgPart;
import com.alks.entity.data.entity.PcProcessChgQty;
import com.alks.entity.data.entity.SdStyleProcessNew;
import com.alks.function.data.dto.produce.CutSeqDto;
import com.alks.function.data.request.chengKong.LotNoToStyleRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

@Mapper
public interface CutProcessChangeMapper {

    /**
     * 指令变更历史记录
     * @param request
     * @param companyId
     * @return
     */
    List<PcProcessChgHead> searchList(@Param("t") LotNoToStyleRequest request, @Param("companyId") String companyId);

    /**
     *  指令工艺变更资料明细
     * @param pcProcessChgHead
     * @return
     */
    List<PcProcessChgPart> selectByHead(PcProcessChgHead pcProcessChgHead);

    /**
     * 指令订单变更资料明细
     * @param pcProcessChgHead
     * @return
     */
    List<PcProcessChgQty> selectByHead2(PcProcessChgHead pcProcessChgHead);

    /**
     * 删除指令变更历史记录
     * @param lotNo
     * @param companyId
     * @return
     */
    int delPcProcessChgHead(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 删除指令工艺变更资料明细
     * @param lotNo
     * @param companyId
     * @return
     */
    int delPcProcessChgPart(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 删除指令订单变更资料明细
     * @param lotNo
     * @param companyId
     * @return
     */
    int delPcProcessChgQty(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 新增指令订单变更资料
     * @param lotNo
     * @param companyId
     * @param loginName
     * @return
     */
    int addPcProcessChgQty(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("loginName") String loginName);
    int addPcProcessChgQty2(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("loginName") String loginName);
    int addPcProcessChgQty3(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("loginName") String loginName);

    /**
     * 更新指令订单旧号码变更资料
     * @param lotNo
     * @param companyId
     * @return
     */
    int updateProcessChgQty(String lotNo, String companyId);

    /**
     * 删除旧号码与新号码相等的
     * @param lotNo
     * @param companyId
     * @return
     */
    int delProcessChgQtyEqualQty(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 新增工艺变更资料
     * @param lotNo
     * @param companyId
     * @param loginName
     * @param style
     * @param color
     */
    int addPcProcessChgPart(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("loginName") String loginName,
                             @Param("style") String style, @Param("color") String color);

    /**
     * 新增工艺变更资料
     * @param lotNo
     * @param companyId
     * @param loginName
     * @param style
     * @param color
     * @return
     */
    int addPcProcessChgPart2(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("loginName") String loginName,
                             @Param("style") String style, @Param("color") String color);

    /**
     * 查询更改的工艺信息
     * @param lotNo
     * @param companyId
     * @param style
     * @param color
     * @return
     */
    List<SdStyleProcessNew> getChangeData(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("style") String style, @Param("color") String color);

    /**
     * 查询部位裁层数据
     * @param lotNo
     * @param companyId
     * @param partName
     * @return
     */
    Integer getPartNameCut(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("partName") String partName);

    /**
     * 指令工艺变更新增
     * @param part
     * @return
     */
    int addPcProcessChgPart3(PcProcessChgPart part);

    /**
     * 获取冲裁工艺工序数量
     * @param companyId
     * @param style
     * @param color
     * @param partName
     * @return
     */
    int getPunchingProcess(@Param("companyId") String companyId, @Param("style") String style, @Param("color") String color, @Param("partName") String partName);

    /**
     * 获取冲裁工艺工序数量
     * @param companyId
     * @param lotNo
     * @param partName
     * @return
     */
    int getPunchingProcess2(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    /**
     * 获取工艺工序数量
     * @param companyId
     * @param style
     * @param color
     * @param partName
     * @return
     */
    int getProcessProcedures(@Param("companyId") String companyId, @Param("style") String style, @Param("color") String color, @Param("partName") String partName);

    /**
     * 获取工艺工序数量
     * @param companyId
     * @param lotNo
     * @param partName
     * @return
     */
    int getProcessProcedures2(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    /**
     * 获取配套工序数量
     * @param companyId
     * @param style
     * @param color
     * @param partName
     * @return
     */
    int getSupportingProcess(@Param("companyId") String companyId, @Param("style") String style, @Param("color") String color, @Param("partName") String partName);

    /**
     * 获取配套工艺工序
     * @param companyId
     * @param lotNo
     * @param partName
     * @return
     */
    int getSupportingProcess2(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    /**
     * 查询订单变更数量
     * @param companyId
     * @param lotNo
     * @return
     */
    int getPcProcessChgQty(String companyId, String lotNo);

    /**
     * 查询工艺变更数量
     * @param companyId
     * @param lotNo
     * @return
     */
    int getPcProcessChgPart(@Param("companyId") String companyId, @Param("lotNo") String lotNo);

    /**
     * 新增指令工艺变更资料
     * @param head
     * @return
     */
    int addPcProcessChgHead(PcProcessChgHead head);

    /**
     * 查询变更指令是否存在
     * @param companyId
     * @param lotNo
     * @param sysDate
     * @return
     */
    PcProcessChgHead selectPcProcessChgHead(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("sysDate") LocalDate sysDate);

    /**
     * 修改每带包装数量
     * @param pcProcessChgPart
     * @return
     */
    int updateBagQtyById(PcProcessChgPart pcProcessChgPart);

    /**
     * 删除针车取消的工序
     * @param companyId
     * @param lotNo
     * @param partName
     * @return
     */
    int delPcStitchPartStatus(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    int delPcCutPartStatus(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    int delPcCuttingLsPart(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    /**
     * 删除部件标签
     * @param companyId
     * @param lotNo
     * @param partName
     * @return
     */
    int delPcCuttingLsLabel(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    int delPcLotPartProcess(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    int delPcLotPart(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName);

    int addPcLotPart(@Param("companyId") String companyId, @Param("loginName") String loginName, @Param("style") String style,
                     @Param("color") String color, @Param("partName") String partName, @Param("lotNo") String lotNo);

    int getSdStyleProcessNewSeq(@Param("companyId") String companyId, @Param("style") String style, @Param("color") String color, @Param("partName") String partName);

    int delPcCutPartStatus2(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName, @Param("processCode") String processCode);

    int delPcCuttingLsPart2(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName, @Param("processCode") String processCode);

    int delPcLotPartProcess2(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("partName") String partName, @Param("processCode") String processCode);

    int updatePcProcessChgHead(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("dealFlag") String dealFlag);

    List<CutSeqDto> getPcLotPartList(@Param("lotNo") String lotNo, @Param("companyId") String companyId);
}
